<?php
class TcMovimientosDiariosController extends AppController {
	var $name = 'TcMovimientosDiarios';
	var $uses = array ('MgCliente', 'MgUsuario', 'MgMesesPendiente', 'MgMesesAdelantado', 'TcAnchoDeBanda', 'TcContrato','TcEstadoContrato' ,'TcCobro', 'TcEstadoContrato', 'MgDocumento', 'MgColonia', 'MgAgente', 'MgDescuento', 'MgTipoDescuento', 'TcAnchoDeBanda', 'MgDiaProceso' , 'TcMovimientosDiario');
	var $components = array('RequestHandler', 'Fecha', 'Usuario', 'Auth', 'Total', 'Values');
	var $helpers = array('Html', 'Form', 'Ajax', 'Paginator');
	var $paginate = array('TcMovimientosDiario'=>array('limit' => 25, 'order' => array('TcMovimientosDiario.id' => 'desc')));

	function index()
	{
		$this->helpers[] = 'Boton';
		$this->pageTitle='Pago de Facturas';
		$this->TcMovimientosDiario->recursive = 0;
		$this->set('tcMovimientosDiarios', $this->paginate());
	}

	//................................................................................................................

	function ingreso($contrato_id = null){
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$cobros = $this->TcCobro->find('first', array(
					'fields'=>array('id', 'valor') , 
					'conditions'=>array('TcCobro.descripcion LIKE'=>'%INSTALACION%', 'TcCobro.tc_tipo_contrato_id'=>$contrato['TcContrato']['tc_tipo_contrato_id']), 
					'order id'
					));

					if($this->data['TcMovimientosDiario']['valor_pagadox'] < $cobros['TcCobro']['valor']) {
						$this->Session->setFlash("No puede ingresarse un contrato con un monto menor a la instalacion: " . $cobros['TcCobro']['valor']);
						$this->redirect(array('action'=>'ingreso'));
					}
					$this->TcMovimientosDiario->create();
					$this->data = $this->Values->por_defecto($this->data, 8);
					$this->data['TcMovimientosDiario']['tc_contrato_id'] = $contrato['TcContrato']['id'];
					$this->data['TcMovimientosDiario']['pago_mes_inicial'] = $contrato['TcContrato']['fecha_instalacion'];
					$fup = $this->data['TcMovimientosDiario']['pago_mes_final'] = $this->Fecha->agregar_mes($contrato['TcContrato']['fecha_instalacion'], 1, 'ymd');
					$fpp = $this->data['TcMovimientosDiario']['fecha_referencia'];
					$pagado = $this->data['TcMovimientosDiario']['valor_pagadox'];
					$this->data['TcMovimientosDiario']['valor_transaccion'] = $this->data['TcMovimientosDiario']['valor_pagado'] = $pagado;
					$this->data['TcMovimientosDiario']['descripcion'] = 'PAGO DE INSTALACION DE SERVICIO';
					if($this->TcMovimientosDiario->save($this->data)) {
						$this->TcContrato->updateAll(array('TcContrato.id'=>$contrato['TcContrato']['id']), array('fecha_ultimo_pago_banco'=>"'$fpp'"));
						$this->Session->setFlash("Datos se han guardado");
						$this->redirect(array('action'=>'ingreso'));
					} else {
						$this->Session->setFlash("No se pudo realizar la transaccion");
						$this->redirect(array('action'=>'index'));
					}
		}
		$this->set('contrato_id', $contrato_id);
	}

	//................................................................................................................

	function ingresoExt($contrato_id = null){
		Configure::write('debug', '0');
		$this->layout = "ajax";
		$response = array(
   		     	'success' => false,
		     	'errors' =>array('data[TcMovimientosDiario][contrato]'=>"No puede estar vacio") 			 	
		);
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$cobros = $this->TcCobro->find('first', array(
					'fields'=>array('id', 'valor') , 
					'conditions'=>array('TcCobro.descripcion LIKE'=>'%INSTALACION%', 'TcCobro.tc_tipo_contrato_id'=>$contrato['TcContrato']['tc_tipo_contrato_id']), 
					'order id'
					));

					if($this->data['TcMovimientosDiario']['valor_pagadox'] < $cobros['TcCobro']['valor']) {
						$response = array(
   		     	'success' => false,
		     	'errors' =>array('data[TcMovimientosDiario][valor_pagadox]'=>"No puede ingresarse un contrato con un monto menor a la instalacion: " . $cobros['TcCobro']['valor']) 			 	
			  	);
			  	/*$this->Session->setFlash("No puede ingresarse un contrato con un monto menor a la instalacion: " . $cobros['TcCobro']['valor']);
			  	 $this->redirect(array('action'=>'ingreso'));*/
					} else{
						$this->TcMovimientosDiario->create();
						$this->data = $this->Values->por_defecto($this->data, 8);
						$this->data['TcMovimientosDiario']['tc_contrato_id'] = $contrato['TcContrato']['id'];
						$this->data['TcMovimientosDiario']['pago_mes_inicial'] = $contrato['TcContrato']['fecha_instalacion'];
						$fup = $this->data['TcMovimientosDiario']['pago_mes_final'] = $this->Fecha->agregar_mes($contrato['TcContrato']['fecha_instalacion'], 1, 'ymd');
						$fpp = $this->data['TcMovimientosDiario']['fecha_referencia'];
						$pagado = $this->data['TcMovimientosDiario']['valor_pagadox'];
						$this->data['TcMovimientosDiario']['valor_transaccion'] = $this->data['TcMovimientosDiario']['valor_pagado'] = $pagado;
						$this->data['TcMovimientosDiario']['descripcion'] = 'PAGO DE INSTALACION DE SERVICIO';
						if($this->TcMovimientosDiario->save($this->data)) {
							$this->TcContrato->updateAll(array('TcContrato.id'=>$contrato['TcContrato']['id']), array('fecha_ultimo_pago_banco'=>"'$fpp'"));
							$response = array(
   		     			'success' => true,
		     			'errors' =>'' 			 	
		     			);
		     			/*$this->Session->setFlash("Datos se han guardado");
		     			 $this->redirect(array('action'=>'ingreso'));*/
						} else {
							$response = array(
   		     			'success' => false,
		     			'errors' =>array('data[TcMovimientosDiario][contrato]'=>"Error en el contrato") 			 	
							);
							/*
							 $this->Session->setFlash("No se pudo realizar la transaccion");
							 $this->redirect(array('action'=>'index'));*/
						}
					}
		}
		$this->set('response', $response);
	}

	//................................................................................................................
	function caja($contrato = null){
		$listAgentes = $this->MgAgente->find('all', array('fields'=>array('id', 'descripcion'), 'conditions'=>array('mg_tipo_agente_id <>'=>1), 'order'=>'id ASC'));
		$agente_id = $this->MgAgente->find('first', array('fields'=>array('id'),'conditions'=>array('mg_tipo_agente_id <>'=>1), 'order'=>'id ASC'));
		$documentos = $this->MgDocumento->query("select id, codigo_referencia from mg_documentos as MgDocumento where suma < cantidad_facturas and mg_agente_id=".$agente_id['MgAgente']['id']." order by codigo_referencia");
		$this->set('codos', $this->Values->obtener_codos(24));
		$this->set('agentes', Set::combine($listAgentes, "{n}.MgAgente.id", "{n}.MgAgente.descripcion"));
		$this->set('contrato_id', $contrato);
		$this->set('meses', $this->Values->obtener_meses());
		$this->set('descripcion', $this->data['TcMovimientosDiario']['contrato']);
		$this->set('documentox', Set::combine($documentos, "{n}.MgDocumento.id","{n}.MgDocumento.codigo_referencia"));
	}

	//................................................................................................................

	function banco($contrato = null){
		$listAgentes = $this->MgAgente->find('all', array('fields'=>array('id', 'descripcion'), 'conditions'=>array('mg_tipo_agente_id'=>1), 'order'=>'id ASC'));
		$agente_id = $this->MgAgente->find('first', array('fields'=>array('id'), 'conditions'=>array('mg_tipo_agente_id'=>1), 'order'=>'id ASC'));
		$documentos = $this->MgDocumento->query("select id, codigo_referencia from mg_documentos as MgDocumento where suma < cantidad_facturas and mg_agente_id=".$agente_id['MgAgente']['id']." order by codigo_referencia");
		$this->set('codos', $this->Values->obtener_codos(24));
		$this->set('agentes', Set::combine($listAgentes, "{n}.MgAgente.id", "{n}.MgAgente.descripcion"));
		$this->set('contrato_id', $contrato);
		$this->set('meses', $this->Values->obtener_meses());
		$this->set('descripcion', $this->data['TcMovimientosDiario']['contrato']);
		$this->set('documentox', Set::combine($documentos, "{n}.MgDocumento.id","{n}.MgDocumento.codigo_referencia"));
	}

	//................................................................................................................

	function insertarextmuestra()
	{

	}

	//................................................................................................................

	function historial($contrato_id = null){
		$this->helpers[] = 'Fecha';
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			//$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$this->TcMovimientosDiario->recursive = 0;
			$this->set('TcMovimientosDiarios', $this->paginate('TcMovimientosDiario',array(
			//	'mg_tipo_situacione_id'=>1,
					'TcMovimientosDiario.tc_contrato_id'=>$id[1])
			));
		}
		$this->set('contrato_id', $contrato_id);
	}
	//................................................................................................................



	//................................................................................................................

	function reversion($_id = null){
		$this->helpers[] = 'Fecha';
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$this->TcMovimientosDiario->recursive = 0;
			$this->paginate['TcMovimientosDiario']['limit'] = 1;
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$this->set('TcMovimientosDiarios', $this->paginate('TcMovimientosDiario', array(
					'tc_contrato_id'=>$contrato['TcContrato']['id'], 
					'mg_tipo_transaccione_id NOT BETWEEN ? AND ?'=>array(2, 5), 
					'mg_tipo_situacione_id'=>1, 
					'TcMovimientosDiario.created BETWEEN ? AND ?'=>array(
			$this->Fecha->agregar(date("Y-m-d"), array('m'=>-24), 'ymd'),
			date("Y-m-d")
			)
			)));
		}
		if(!empty($_id)) {
			$cambios = array();
			$movs = $this->TcMovimientosDiario->find('first', array('conditions'=>array('TcMovimientosDiario.id'=>$_id), 'order created desc'));
			$id_contrato = $movs['TcMovimientosDiario']['tc_contrato_id'];
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id_contrato)));
			$fecha_ultimo = $this->Fecha->agregar_mes($movs['TcMovimientosDiario']['pago_mes_inicial'], -1, 'ymd');
			$resta = $movs['TcMovimientosDiario']['valor_transaccion'] - $movs['TcMovimientosDiario']['valor_pagado'];
			$descripcion = '[REVERSADO] ' . $movs['TcMovimientosDiario']['descripcion'];

			//Actualiza movimiento
			$this->TcMovimientosDiario->updateAll(array('descripcion'=>"'$descripcion'", 'mg_tipo_situacione_id'=>2), array('TcMovimientosDiario.id'=>$_id));

			//Actualiza contrato
			if(isset($contrato['TcContrato']['saldo_pendiente'])) {
				$saldo = $contrato['TcContrato']['saldo_pendiente'] - $resta;
			}
			$ultimo_mov = $this->TcMovimientosDiario->find('first', array('fields'=>array('fecha_referencia'), 'conditions'=>array('TcMovimientosDiario.tc_contrato_id'=>$id_contrato, 'TcMovimientosDiario.mg_tipo_situacione_id'=>1, 'TcMovimientosDiario.mg_tipo_transaccione_id'=>1), 'order created desc'));
			$fr = $ultimo_mov['TcMovimientosDiario']['fecha_referencia'];
			if($movs['TcMovimientosDiario']['mg_tipo_transaccione_id'] == 1) {
				$cambios = array('fecha_ultimo_pago' => "'$fecha_ultimo'", 'fecha_ultimo_pago_banco'=>"'$fr'");
			}
			$cambios['saldo_pendiente'] = $saldo;
			$this->TcContrato->updateAll($cambios, array('TcContrato.id'=>$id_contrato));

			//Actualiza documento
			$documento = $this->MgDocumento->find('first', array('fields'=>array('MgDocumento.id', 'suma'), 'conditions'=>array('MgDocumento.id'=>$movs['TcMovimientosDiario']['mg_documento_id'])));
			$suma_doc = $documento['MgDocumento']['suma'] - 1;
			$this->MgDocumento->updateAll(array('suma'=>$suma_doc), array('MgDocumento.id'=>$movs['TcMovimientosDiario']['mg_documento_id']));

			$this->Session->setFlash('Reversion realizada');
			$this->redirect(array('action'=>'reversion'));
		}
	}

	//................................................................................................................

	function reversionExt($_id = null){
		Configure::write('debug', '0');
		$this->layout = "ajax";
		if(!empty($_POST['mov_id']))
		{
			$_id = $_POST['mov_id'];
			$cambios = array();
			$movs = $this->TcMovimientosDiario->find('first', array('conditions'=>array('TcMovimientosDiario.id'=>$_id), 'order created desc'));
			$id_contrato = $movs['TcMovimientosDiario']['tc_contrato_id'];
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id_contrato)));
			$fecha_ultimo = $this->Fecha->agregar_mes($movs['TcMovimientosDiario']['pago_mes_inicial'], -1, 'ymd');
			$resta = $movs['TcMovimientosDiario']['valor_transaccion'] - $movs['TcMovimientosDiario']['valor_pagado'];
			$descripcion = '[REVERSADO] ' . $movs['TcMovimientosDiario']['descripcion'];

			//Actualiza movimiento
			$this->TcMovimientosDiario->updateAll(array('descripcion'=>"'$descripcion'", 'mg_tipo_situacione_id'=>2), array('TcMovimientosDiario.id'=>$_id));

			//Actualiza contrato
			if(isset($contrato['TcContrato']['saldo_pendiente'])) {
				$saldo = $contrato['TcContrato']['saldo_pendiente'] - $resta;
			}
			$ultimo_mov = $this->TcMovimientosDiario->find('first', array('fields'=>array('fecha_referencia'), 'conditions'=>array('TcMovimientosDiario.tc_contrato_id'=>$id_contrato, 'TcMovimientosDiario.mg_tipo_situacione_id'=>1, 'TcMovimientosDiario.mg_tipo_transaccione_id'=>1), 'order created desc'));
			$fr = $ultimo_mov['TcMovimientosDiario']['fecha_referencia'];
			if($movs['TcMovimientosDiario']['mg_tipo_transaccione_id'] == 1) {
				$cambios = array('fecha_ultimo_pago' => "'$fecha_ultimo'", 'fecha_ultimo_pago_banco'=>"'$fr'");
			}
			$cambios['saldo_pendiente'] = $saldo;
			$this->TcContrato->updateAll($cambios, array('TcContrato.id'=>$id_contrato));

			//Actualiza documento
			$documento = $this->MgDocumento->find('first', array('fields'=>array('MgDocumento.id', 'suma'), 'conditions'=>array('MgDocumento.id'=>$movs['TcMovimientosDiario']['mg_documento_id'])));
			$suma_doc = $documento['MgDocumento']['suma'] - 1;
			$this->MgDocumento->updateAll(array('suma'=>$suma_doc), array('MgDocumento.id'=>$movs['TcMovimientosDiario']['mg_documento_id']));
			$response = array(
   		     	'success' => true,
		     	'errors' =>''
		     	);
		}
		else
		{
			$response = array(
   		     	'success' => false,
			//'errors' =>$Erros// $this->validateErrors($this->TcContrato)
			);
		}
		$this->set('response',$response);
	}


	/******************************************************************************************
	 *
	 * 								QUITAR SERVICIOS
	 *
	 *****************************************************************************************/

	function quitar($contrato_id = null) {
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			/*$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			 $mora = $this->Fecha->restar($contrato['TcContrato']['fecha_ultimo_pago'], date("Y-m-d")) > 2;
			 $this->set('mora', $mora);*/
			$this->TcContrato->recursive = 0;
			$this->set('TcContratos', $this->paginate('TcContrato',array('TcContrato.id'=>$id[1])));
		}
		$this->set('contrato_id', $contrato_id);
	}

	//................................................................................................................

	function cortar($contrato_id = null) {
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$num_contrato = $contrato['TcContrato']['contrato'];
			$this->data['TcMovimientosDiario']['tc_contrato_id'] = $id[1];

			$this->TcMovimientosDiario->create();
			$this->data = $this->Values->por_defecto($this->data, 2);
			$fecha_cancelacion = $this->data['TcMovimientosDiario']['fecha_referencia'];
			$this->data['TcMovimientosDiario']['descripcion'] = 'CORTE DE SERVICIO';
			if($this->TcMovimientosDiario->save($this->data)) {
				$this->TcContrato->updateAll(array('tc_estado_contrato_id'=>3, 'fecha_cancelacion'=>"'$fecha_cancelacion'"), array('TcContrato.id'=>$id[1]));
				$this->Session->setFlash("El contrato $num_contrato ha sido cortado");
				$this->redirect(array('action'=>'index'));
			}
		}
		$this->set('contrato_id', $contrato_id);
	}

	//................................................................................................................

	function desconectar($contrato_id = null) {
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$num_contrato = $contrato['TcContrato']['contrato'];
			$_id = $this->data['TcMovimientosDiario']['tc_contrato_id'] = $contrato['TcContrato']['id'];

			$this->TcMovimientosDiario->create();
			$this->data = $this->Values->por_defecto($this->data, 2);
			/*
			 if($contrato['TcContrato']['saldo_pendiente'] >= 0 && $this->Fecha->restar($contrato['TcContrato']['fecha_ultimo_pago'], date("Y-m-d")) < 2) {
				$this->Session->setFlash("El contrato $num_contrato no tiene deudas. En lugar de desconexion se aplica el corte o la suspension");
				$this->redirect(array('action'=>'corte'));
				}
				*/
			$dif = $this->Fecha->restar($contrato['TcContrato']['fecha_ultimo_pago'], $this->data['TcMovimientosDiario']['fecha_referencia']);
			$datos = $this->Total->precio_neto($contrato, $dif);
			$fecha_corte = $this->data['TcMovimientosDiario']['fecha_referencia'];
			$this->data['TcMovimientosDiario']['descripcion'] = 'DESCONEXION DEL SERVICIO';

			if($this->TcMovimientosDiario->save($this->data)) {
				$this->TcContrato->updateAll(array('tc_estado_contrato_id'=>2, 'fecha_corte'=>"'$fecha_corte'", 'saldo_pendiente'=>$datos['precio_neto']), array('TcContrato.id'=>$_id));
				$this->Session->setFlash("Al contrato $num_contrato se le ha desconectado el servicio");
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash("Error");
			}
		}
		$this->set('contrato_id', $contrato_id);
	}

	//................................................................................................................

	function suspender($contrato_id = null) {
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$num_contrato = $contrato['TcContrato']['contrato'];
			$_id = $this->data['TcMovimientosDiario']['tc_contrato_id'] = $contrato['TcContrato']['id'];

			$this->TcMovimientosDiario->create();
			$this->data = $this->Values->por_defecto($this->data, 2);
			$fecha_suspension = $this->data['TcMovimientosDiario']['fecha_referencia'];
			$this->data['TcMovimientosDiario']['descripcion'] = 'SUSPENSION DEL SERVICIO';

			if($this->TcMovimientosDiario->save($this->data)) {
				$this->TcContrato->updateAll(array('tc_estado_contrato_id'=>4, 'fecha_corte'=>"'$fecha_suspension'"), array('TcContrato.id'=>$_id));
				$this->Session->setFlash("El contrato $num_contrato ha sido suspendido");
				$this->redirect(array('action'=>'index'));
			}
		}
		$this->set('contrato_id', $contrato_id);
	}





	/******************************************************************************************
	 *
	 * 								SALDAR PENDIENTES
	 *
	 *****************************************************************************************/

	function saldar($contrato = null) {
		$this->set('contrato_id', $contrato);
		$this->set('totales', array(0));

		if(!empty($this->data['TcMovimientosDiario']['contrato']) || !empty($this->data['TcMovimientosDiario']['valor_transaccion']) || !empty($this->data['TcMovimientosDiario']['valor_pagado'])) {
			$contratos = $this->TcContrato->find('first', array('fields'=>array('id', 'saldo_pendiente'), 'conditions'=>array('TcContrato.descripcion'=>$this->data['TcMovimientosDiario']['contrato'])));
			$this->TcMovimientosDiario->create();
			$id_contrato = $contratos['TcContrato']['id'];
			$saldo = $contratos['TcContrato']['saldo_pendiente'];
			$pagado = $this->data['TcMovimientosDiario']['valor_pagado'];
			if($pagado > $saldo) {
				$this->Session->setFlash("No puede dar una cantidad mayor de lo que debe");
				$this->redirect(array('action'=>'saldar'));
			}
			$this->data = $this->Values->por_defecto($this->data, 6);
			$this->data['TcMovimientosDiario']['valor_transaccion'] = $saldo;
			$this->data['TcMovimientosDiario']['valor_pagado'] = $pagado;
			$this->data['TcMovimientosDiario']['tc_contrato_id'] = $id_contrato;

			if($this->TcMovimientosDiario->save($this->data)) {
				$hoy = date("Y-m-d");
				$saldo -= $pagado;
				$this->TcContrato->updateAll(array('saldo_pendiente'=>$saldo), array('TcContrato.id'=>$id_contrato));
				$this->Session->setFlash("Datos guardados");
				$this->redirect(array('action'=>'saldar'));
			}
		}
	}





	/******************************************************************************************
	 *
	 * 								CAMBIO DE DOMICILIO
	 *
	 *****************************************************************************************/

	function cambio() {
		$tipo = $this->TcCobro->find('list', array('fields'=>array('id', 'descripcion'), 'conditions'=>array('TcCobro.id'=>array(8,9)), 'order by id ASC'));
		$this->set('tipo', $tipo);
	}

	//................................................................................................................

	function cambiar() {
		if(!empty($this->data['TcMovimientosDiario']['tipo'])) {
			$tipo = $this->data['TcMovimientosDiario']['tipo'];
			$init = $this->TcCobro->find('first', array('fields'=>array('valor', 'descripcion'), 'conditions'=>array('TcCobro.id'=>$tipo), 'order by id ASC'));
			$this->set('v_pago', $init['TcCobro']['valor']);
			$this->set('tipo', $tipo);

			if(!empty($this->data['TcMovimientosDiario']['direccion'])) {
				$this->TcMovimientosDiario->create();
				$this->data = $this->Values->por_defecto($this->data, 5);
				$contratos = $this->TcContrato->find('first', array('fields'=>array('id'), 'conditions'=>array('TcContrato.descripcion'=>$this->data['TcMovimientosDiario']['contrato'])));
				$this->data['TcMovimientosDiario']['tc_contrato_id'] = $contratos['TcContrato']['id'];

				//Salvar la transaccion
				if($this->TcMovimientosDiario->save($this->data)) {
					$casa = $this->data['TcMovimientosDiario']['casa'];
					$bloque = $this->data['TcMovimientosDiario']['bloque'];
					$calle = $this->data['TcMovimientosDiario']['calle'];
					$direccion = $this->data['TcMovimientosDiario']['direccion'];
					$updater = array('descripcion_direccion'=>"'$direccion'", 'calle'=>"'$calle'", 'bloque'=>"'$bloque'", 'casa'=>"'$casa'");

					if($tipo==9) {
						$colonia = $this->data['TcMovimientosDiario']['colonia'];
						$updater = array('mg_colonia_id'=>$colonia, 'descripcion_direccion'=>"'$direccion'", 'calle'=>"'$calle'", 'bloque'=>"'$bloque'", 'casa'=>"'$casa'");
					}
					$this->TcContrato->updateAll($updater, array('TcContrato.id'=>$contratos['TcContrato']['id']));
					$this->Session->setFlash("Datos guardados");
					$this->redirect(array('action'=>'index'));
				} else {
					$this->Session->setFlash("No pudo guardarse");
					$this->redirect(array('action'=>'index'));
				}
			}
		} else {
			$this->Session->setFlash("Hubo algun problema, intentelo de nuevo");
			$this->redirect(array('action'=>'cambio'));
		}
		$colonias = $this->MgColonia->find('list', array('fields'=>array('id', 'descripcion'), 'order'=>'MgColonia.id'));
		$this->set('colonias', $colonias);
	}



	/******************************************************************************************
	 *
	 * 								DETALLE DE DOCUMENTOS
	 *
	 *****************************************************************************************/

	function detalle($id = null) {
		//$this->set('doc_id', null);
		if(!empty($id)) {
			$this->TcMovimientosDiario->recursive = 0;
			//$doc = $this->MgDocumento->find('first', array('fields'=>array('id', 'codigo_referencia'), 'conditions'=>array('codigo_referencia'=>$this->data['TcMovimientosDiario']['mg_documento_id'])));
			//$this->set('TcMovimientosDiarios', $this->paginate('TcMovimientosDiario', array('mg_documento_id'=>$doc['MgDocumento']['id'], 'mg_tipo_transaccione_id'=>1, 'mg_tipo_situacione_id'=>1)));
			$this->set('TcMovimientosDiarios', $this->paginate('TcMovimientosDiario', array('mg_documento_id'=>$id, 'mg_tipo_transaccione_id'=>1, 'mg_tipo_situacione_id'=>1)));
		}
	}



	/******************************************************************************************
	 *
	 * 								OTROS PAGOS
	 *
	 *****************************************************************************************/

	function otros($contrato_id = null) {
		$this->pageTitle = 'Otros pagos';
		if(!empty($this->data)){
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$pago = $this->data['TcMovimientosDiario']['valor_pagado'];
			$this->TcMovimientosDiario->create();
			$this->data = $this->Values->por_defecto($this->data, 7);
			$this->data['TcMovimientosDiario']['valor_transaccion'] = $this->data['TcMovimientosDiario']['valor_pagado'] = $pago;
			$this->data['TcMovimientosDiario']['tc_contrato_id'] = $id[1];

			if($this->TcMovimientosDiario->save($this->data)){
				$this->Session->setFlash('Datos Guardados Exitosamente');
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash('Error: No se creo la factura');
			}
		}
		$listAgentes = $this->MgAgente->find('all', array('fields'=>array('id', 'descripcion'), 'order'=>'id ASC'));
		$agente_id = $this->MgAgente->find('first', array('fields'=>array('id'),'conditions'=>array('mg_tipo_agente_id <>'=>1), 'order'=>'id ASC'));
		$documentos = $this->MgDocumento->find('list', array('fields'=>array('id','codigo_referencia'),'order'=>'id ASC','conditions'=>array('mg_agente_id'=>$agente_id['MgAgente']['id'])));
		$this->set('agentes', Set::combine($listAgentes, "{n}.MgAgente.id", "{n}.MgAgente.descripcion"));
		$this->set('documentox', $documentos);
		$this->set('contrato_id', $contrato_id);
	}



	/******************************************************************************************
	 *
	 * 								TOTAL DE FACTURA
	 *
	 *****************************************************************************************/

	function total()
	{
		$this->pageTitle = 'Total de la Factura';
		$tipo = $this->data['TcMovimientosDiario']['tipo'];
		$autorizar = false;
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$contrato_id = $contrato['TcContrato']['id'];
			$datos = $this->Total->variables(array('contrato'=>$contrato, 'meses'=>$this->data['TcMovimientosDiario']['meses_pagados'], 'referencia'=>$this->data['TcMovimientosDiario']['fecha_referencia']));
			$this->data = $this->Values->por_defecto($this->data, 1);
			$this->data['TcMovimientosDiario']['tc_contrato_id'] = $contrato_id;
			$fecha_inicial = $this->data['TcMovimientosDiario']['pago_mes_inicial'] = $datos['fecha_inicial'];
			$fecha_fin = $this->data['TcMovimientosDiario']['pago_mes_final'] = $datos['fecha_fin'];
			$fecha_prox = $this->data['TcMovimientosDiario']['pago_mes_proximo'] = $datos['fecha_prox'];
			$fecha_referencia = $this->data['TcMovimientosDiario']['fecha_referencia'] = $datos['fecha_referencia'];
			$this->data['TcMovimientosDiario']['valor_transaccion'] = $datos['total'];
			$saldo = $contrato['TcContrato']['saldo_pendiente'] + $datos['total'] - $this->data['TcMovimientosDiario']['valor_pagado'];
			if(!empty($this->data['TcMovimientosDiario']['mg_documento_id'])) {
				$documento = $this->data['TcMovimientosDiario']['mg_documento_id'];
			} else {
				$documento = 0;
			}

			$problemax = !$this->Values->validar_mes($this->data['TcMovimientosDiario']['mes_inicial'], $this->Fecha->agregar_mes($contrato['TcContrato']['fecha_ultimo_pago'], 1, 'ymd'));
			$autorizar = !$problemax;

			if($problemax && !empty($this->data['usuario']) && !empty($this->data['clave'])) {
				$usuario = $this->Usuario->validar($this->data['usuario'], $this->data['clave'], 'CAJERO');
				$autorizar = !empty($usuario);
			}

			if(!$autorizar) {
				$this->Session->setFlash('Acceso denegado');
				$this->redirect(array('action'=>$tipo));
			}

			//Guarda lo del Form
			if(!empty($this->data) && $autorizar){
				$this->TcMovimientosDiario->create();
				if($this->TcMovimientosDiario->save($this->data)) {

					//Actualiza contrato
					$this->TcContrato->updateAll(
					array('TcContrato.saldo_pendiente'=>$saldo, 'TcContrato.fecha_ultimo_pago'=>"'$fecha_fin'", 'TcContrato.fecha_ultimo_pago_banco'=>"'$fecha_referencia'"),
					array('TcContrato.id'=>$contrato_id)
					);

					//Actualiza documento
					$doc = $this->MgDocumento->find('first', array('fields'=>array('id', 'suma'), 'conditions'=>array('MgDocumento.id'=>$documento)));
					$suma = $doc['MgDocumento']['suma'] + 1;
					$this->MgDocumento->updateAll(array('suma'=>$suma), array('MgDocumento.id'=>$documento));

					//Actualiza meses pendientes
					if($problemax) {
						$this->MgMesesPendiente->save(
						array('tc_contrato_id'=>$contrato_id, 'tc_movimientos_diario_id'=>$this->TcMovimientosDiario->id, 'fecha_inicial'=>$fecha_inicial, 'meses'=>$this->data['TcMovimientosDiario']['meses_pagados'], 'codo'=>$this->data['TcMovimientosDiario']['codo'], 'adicionado_por'=>$this->Session->read('Auth.MgUsuario.usuario'))
						);
					}
					$this->Session->setFlash('Datos Guardados Exitosamente');
					$this->redirect(array('action'=>$tipo));
				} else {
					$this->Session->setFlash('Error: No se creo la factura');
					$this->redirect(array('action'=>$tipo));
				}
			}
		} else {
			$this->redirect(array('action'=>$tipo));
		}
	}


	/******************************************************************************************
	 *
	 * 								REACTIVAR CONTRATO
	 *
	 *****************************************************************************************/

	function reactivar($contrato_id = null) {
		$this->helpers[] = 'number';
		$this->helpers[] = 'values';

		//Primera validacion: Datos nulos
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));

			//Poner en el form la data
			$valor_a_pagar = $this->data['TcMovimientosDiario']['valor_transaccion'];
			$pagado = $this->data['TcMovimientosDiario']['valor_pagado'];
			$this->data = $this->Values->por_defecto($this->data, 3);
			$descripcion_estado = $this->TcEstadoContrato->find('first', array('fields'=>array('id', 'descripcion'), 'conditions'=>array('TcEstadoContrato.id'=>$contrato['TcContrato']['tc_estado_contrato_id'])));
			$recargo = $this->TcCobro->find('first', array('fields'=>array('TcCobro.valor'), 'conditions'=>array('TcCobro.descripcion LIKE'=>'REINSTALACION', 'TcCobro.tc_tipo_contrato_id'=>$contrato['TcContrato']['tc_tipo_contrato_id'])));
			$saldo_pendiente = $contrato['TcContrato']['saldo_pendiente'];
			$total = $saldo_pendiente + $recargo['TcCobro']['valor'];
			$fecha_reinstalacion = $this->data['TcMovimientosDiario']['fecha_referencia'];
			$this->data['TcMovimientosDiario']['descripcion'] = 'RECONEXION DEL CONTRATO';
			$this->data['TcMovimientosDiario']['valor_transaccion'] = $total;
			$this->data['TcMovimientosDiario']['tc_contrato_id'] = $contrato['TcContrato']['id'];

			//Validacion de pagos erroneos
			if($pagado < $recargo['TcCobro']['valor']) {
				$this->Session->setFlash('No se puede pagar menos que el recargo: ' . $recargo['TcCobro']['valor']);
				$this->redirect(array('action'=>'reactivar'));
			}

			//Guardar datos
			if(!empty($this->data)) {
				$this->TcMovimientosDiario->create();
				if($this->TcMovimientosDiario->save($this->data)) {
					$saldo = $contrato['TcContrato']['saldo_pendiente'] - $pagado + $recargo['TcCobro']['valor'];
					$f = $this->Fecha->agregar_mes($fecha_reinstalacion, 0, 'ymd');

					//Actualiza el contrato
					$this->TcContrato->updateAll(
					array('tc_estado_contrato_id'=>1, 'fecha_reinstalacion'=>"'$f'", 'fecha_ultimo_pago'=>"'$f'", 'fecha_ultimo_pago_banco'=>"'$f'", 'saldo_pendiente'=>$saldo),
					array('TcContrato.id'=>$contrato['TcContrato']['id']));
					$this->Session->setFlash('Datos guardados');
					$this->redirect(array('action'=>'index'));
				} else {
					$this->Session->setFlash('Datos no se han guardado');
					$this->redirect(array('action'=>'reactivar'));
				}
			}
		}
		$this->set('contrato_id', $contrato_id);
	}




	/******************************************************************************************
	 *
	 * 								FUNCIONES QUE USAN AJAX
	 *
	 *****************************************************************************************/

	function ajax_validate() {
		Configure::write('debug', 0);
		if($this->RequestHandler->isAjax()) {
			$this->data['TcMovimientosDiario'][$this->params['form']['field']] = $this->params['form']['value'];
			$this->TcMovimientosDiario->set($this->data);
			if($this->TcMovimientosDiario->validates()) {
				$this->autoRender = false;
			}
			else {
				$errorArray = $this->validateErrors($this->TcMovimientosDiario);
				$this->set('error', $errorArray[$this->params['form']['field']]);
			}
		}
	}

	//................................................................................................................

	function autoComplete(){
		Configure::write('debug', 0);
		$this->layout = 'ajax';
		$contratos = $this->TcContrato->find('all', array(
			'conditions'=>array('TcContrato.tc_estado_contrato_id'=>1, 'TcContrato.contrato LIKE'=>$this->params['url']['q'] . '%'), 
			'fields'=>array('contrato', 'descripcion', 'id'), 'order'=>array('TcContrato.contrato ASC')
		));
		$this->set('contratos', $contratos);
	}

	//................................................................................................................

	function autoCompleteAll(){
		Configure::write('debug', 0);
		$this->layout = 'ajax';
		$contratos = $this->TcContrato->find('all', array(
			'conditions'=>array('TcContrato.contrato LIKE'=>$this->params['url']['q'] . '%'), 
			'fields'=>array('contrato', 'descripcion', 'id'), 'order'=>array('TcContrato.contrato ASC')
		));
		$this->set('contratos', $contratos);
	}

	//................................................................................................................

	function autoCompleteReajuste() {
		Configure::write('debug', 0);
		$this->layout = 'ajax';
		$count = $this->TcMovimientosDiarios->
		$contratos = $this->TcContrato->find('all', array(
			'conditions'=>array('TcContrato.contrato LIKE'=>$this->params['url']['q'] . '%'), 
			'fields'=>array('contrato', 'descripcion', 'id'), 'order'=>array('TcContrato.contrato ASC')
		));
		$this->set('contratos', $contratos);
	}

	//................................................................................................................

	function autoCompleteReconexion(){
		Configure::write('debug', 0);
		$this->layout = 'ajax';
		$contratos = $this->TcContrato->find('all', array(
			'conditions'=>array('TcContrato.tc_estado_contrato_id'=>array(2,4), 'TcContrato.contrato LIKE'=>$this->params['url']['q'] . '%'), 
			'fields'=>array('contrato', 'descripcion', 'id'), 'order'=>array('TcContrato.contrato ASC')
		));
		$this->set('contratos', $contratos);
	}

	//................................................................................................................

	function autoCompleteDocumentos(){
		Configure::write('debug', 0);
		$this->layout = 'ajax';
		$docs = $this->MgDocumento->find('all', array(
			'conditions'=>array('MgDocumento.codigo_referencia LIKE'=>$this->params['url']['q'] . '%'), 
			'fields'=>array('MgDocumento.codigo_referencia'), 'order'=>array('MgDocumento.codigo_referencia ASC')
		));
		$this->set('documentox', $docs);
	}

	//................................................................................................................

	function autoCompleteSaldos() {
		Configure::write('debug', 0);
		$this->layout = 'ajax';
		$contratos = $this->TcContrato->find('all', array(
			'conditions'=>array('TcContrato.saldo_pendiente <> '=>0, 'TcContrato.contrato LIKE'=>$this->params['url']['q'] . '%'), 
			'fields'=>array('TcContrato.contrato', 'TcContrato.descripcion'), 'order'=>array('TcContrato.contrato ASC')
		));
		$this->set('contratos', $contratos);
	}

	//................................................................................................................

	function update_auth() {
		Configure::write('debug', 0);
		$contratos = $this->TcContrato->find('first', array('fields'=>array('fecha_ultimo_pago'), 'conditions'=>array('TcContrato.descripcion'=>$this->data['TcMovimientosDiario']['contrato'])));
		//$problemas = !$this->Values->validar_codo($this->data['TcMovimientosDiario']['codo'], $this->Fecha->agregar_mes($contratos['TcContrato']['fecha_ultimo_pago'], 1, 'ymd'), $this->data['TcMovimientosDiario']['meses_pagados']);
		$problemas = !$this->Values->validar_mes($this->data['TcMovimientosDiario']['mes_inicial'], $this->Fecha->agregar_mes($contratos['TcContrato']['fecha_ultimo_pago'], 1, 'ymd'));
		$this->set('problemas', $problemas);
		$this->render('/elements/update_auth', 'ajax');
	}

	//................................................................................................................

	function update_total() {
		Configure::write('debug', 0);
		$this->helpers[] = 'Number';
		$this->helpers[] = 'Fecha';
		$this->helpers[] = 'Values';
		if(!empty($this->data['TcMovimientosDiario']['contrato'])) {
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('TcContrato.id'=>$id[1])));
			$meses = $this->data['TcMovimientosDiario']['meses_pagados'];
			$referencia = null;
			if(!empty($this->data['TcMovimientosDiario']['fecha_referencia'])) {
				$referencia = $this->data['TcMovimientosDiario']['fecha_referencia'];
			}
			$datos = $this->Total->variables(array(
				'contrato'=>$contrato, 
				'meses'=>$meses, 
				'referencia'=>$referencia,							
			));
			$this->set('contrato_id', $contrato['TcContrato']['id']);
			$this->set('contrato_num', $contrato['TcContrato']['contrato']);
			$this->set('contrato_tipo', $contrato['TcContrato']['tc_tipo_contrato_id']);
			$this->set('saldos_p', $contrato['TcContrato']['saldo_pendiente']);
		}
		$this->set(compact('datos'));
		$this->render('/elements/update_total', 'ajax');
	}

	//................................................................................................................

	function update_documento()
	{
		Configure::write('debug', 0);
		if (!empty($this->data['TcMovimientosDiario']['mg_agente_id'])) {
			$agente_id = $this->data['TcMovimientosDiario']['mg_agente_id'];
			$documentos = $this->MgDocumento->query("select id, codigo_referencia from mg_documentos as MgDocumento where suma < cantidad_facturas and mg_agente_id=$agente_id");
		} else {
			$documentos = array(0);
		}
		$this->set('options', Set::combine($documentos, "{n}.MgDocumento.id","{n}.MgDocumento.codigo_referencia"));
		$this->render('/elements/update_documento', 'ajax');
	}

	//................................................................................................................

	function update_fecha_anterior()
	{
		Configure::write('debug', 0);
		$result = '';
		if(!empty($this->data['TcMovimientosDiario']['tc_contrato_id'])) {
			$contratos = $this->TcContrato->find('first', array('fields'=>array('id', 'fecha_ultimo_pago'), 'conditions'=>array('contrato'=>$this->data['TcMovimientosDiario']['contrato'])));
			$result = $contratos['TcContrato']['fecha_ultimo_pago'];
			if(!empty($result)) {
				$result = $this->Fecha->formatear($result);
			}
		}
		$this->set(compact('result'));
		$this->render('/elements/update_fecha_anterior','ajax');
	}

	//................................................................................................................

	function update_total_cambio()
	{
		Configure::write('debug', 0);
		$total = 0;
		if (!empty($this->data['TcMovimientosDiario']['tipo'])) {
			$tipo = $this->data['TcMovimientosDiario']['tipo'];
			$cobros = $this->TcCobro->find('first', array('fields'=>array('valor'), 'conditions'=>array('TcCobro.id'=>array(8,9)), 'order by id ASC'));
			$valor = array($cobros['TcCobro']['valor']);
			if(!empty($valor)) {
				$total = $valor;
			}
		}
		$this->set('total', $total);
		$this->render('/elements/update_total_x', 'ajax');
	}

	//................................................................................................................

	function update_total_cancelacion()
	{
		Configure::write('debug', 0);
		if(!empty($this->data['TcMovimientosDiario']['tc_contrato_id']))
		{
			$contrato_id = $this->data['TcMovimientosDiario']['tc_contrato_id'];
			$contrato = $this->TcContrato->find('first', array('fields'=>array('tc_tipo_contrato_id', 'saldo_pendiente'), 'conditions'=>array('TcContrato.contrato'=>628)));
			if(!empty($contrato['TcContrato']['saldo_pendiente'])) {
				$saldo = $contrato['TcContrato']['saldo_pendiente'];
			} else {
				$saldo = 0;
			}
		}
		$this->set('totales_cancelacion', array(0=>$saldo));
		$this->render('/elements/update_total_cancelacion', 'ajax');
	}

	//................................................................................................................

	function update_total_saldo()
	{
		Configure::write('debug', 0);
		$total = 0;
		if(!empty($this->data['TcMovimientosDiario']['contrato']))
		{
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('fields'=>array('saldo_pendiente'), 'conditions'=>array('TcContrato.id'=>$id[1])));
			$total = $contrato['TcContrato']['saldo_pendiente'];
		}
		$this->set('total', $total);
		$this->render('/elements/update_total_x', 'ajax');
	}

	//................................................................................................................

	function update_total_reactivacion()
	{
		Configure::write('debug', 0);
		$total = 0;
		if(!empty($this->data['TcMovimientosDiario']['contrato' ]))
		{
			$id = explode('>', $this->data['TcMovimientosDiario']['contrato']);
			$contrato = $this->TcContrato->find('first', array('conditions'=>array('tc_estado_contrato_id'=>array(2,4), 'TcContrato.id'=>$id[1])));
			$contrato_id = $this->data['TcMovimientosDiario']['contrato'];
			$descripcion_estado = $this->TcEstadoContrato->find('first', array('fields'=>array('id', 'descripcion'), 'conditions'=>array('TcEstadoContrato.id'=>$contrato['TcContrato']['tc_estado_contrato_id'])));
			$recargo = $this->TcCobro->find('first', array('fields'=>array('valor'), 'conditions'=>array('TcCobro.descripcion LIKE'=>'%REINSTALACION%', 'TcCobro.tc_tipo_contrato_id'=>$contrato['TcContrato']['tc_tipo_contrato_id'])));
			$aux = $recargo['TcCobro']['valor'] + $contrato['TcContrato']['saldo_pendiente'];
			if(!empty($aux)) {
				$total = $aux;
			}
		}		
		$this->render('/elements/update_total_x', 'ajax');
	}

	/******************************************************************************************
	 *
	 * 								FUNCIONES QUE USAN EXT-JS
	 *
	 *****************************************************************************************/
	function ext_agente($tipo = null){
		Configure::write('debug', '0');
		$this->layout = "ajax";		
		$condiciones = array(
				'fields'=>array('MgAgente.id, MgAgente.descripcion'),
				'order'=>array('MgAgente.descripcion')
		);
		if (!empty($tipo)){
			$condiciones['conditions'] = array('MgAgente.mg_tipo_agente_id'=>$tipo);
		}
		$data = $this->MgAgente->find('all', $condiciones);
		$arreglo = array();
		foreach ($data as $k=>$v){
			foreach($v as $k1=>$v1){
				$subarreglo = array();	
				//echo $v1['id'].'<br>';										
				$subarreglo['id'] = $v1['id'];
				$subarreglo['descripcion'] = $v1['descripcion'];
				$arreglo[] = $subarreglo;
			}
		}
		$this->set('agentes', $arreglo);
	}

	//................................................................................................................
	
	function ext_documento($tipo = null){
		Configure::write('debug', '0');
		$this->layout = "ajax";		
		$condiciones = array(
				'fields'=>array('MgDocumento.id, MgDocumento.codigo_referencia'),
				'order'=>array('MgDocumento.codigo_referencia')
		);
		if (!empty($tipo)){
			$condiciones['conditions'] = array('MgDocumento.mg_tipo_agente_id'=>2);
		}
		$data = $this->MgDocumento->find('all', $condiciones);	
		$arreglo = array();
		foreach ($data as $k=>$v){
			foreach($v as $k1=>$v1){
				//echo $v1['cantidad_facturas'] . '<-->'. $v1['suma'].'<br>';
				//if ($v1['cantidad_facturas'] > $v1['suma']){
				//	echo $v1['id'].','.$v1['codigo_referencia'].','.$v1['cantidad_facturas'].','.$v1['suma'].'<br>';
					$subarreglo = array();
					$subarreglo['id'] = $v1['id'];
					$subarreglo['codigo_referencia'] = $v1['codigo_referencia'];
					$arreglo[] = $subarreglo;
				//}				
			}
		}		
		$this->set('documentos', $arreglo);
	}

	//................................................................................................................

	function historialext(){
		Configure::write('debug', '0');
		$this->layout = "ajax";
		$limit = 5;
		$page = 1;
		$contratoid = 0;
		if(!empty($_POST['limit']))
		$limit = $_POST['limit'];
		if(!empty($_POST['start']))
		$page = ($_POST['start']/$limit)+1;
		if(!empty($_POST['contratoid']))
		$contratoid = $_POST['contratoid'];
		/*
		 * Busca el ultimo movimiento creado para poder reversar
		 */
		$fields_array= array('TcContrato.contrato','MgAgente.descripcion', 'MgDocumento.codigo_referencia',
								 'TcMovimientosDiario.descripcion','TcMovimientosDiario.valor_pagado','TcMovimientosDiario.mg_tipo_situacione_id',
								 'TcMovimientosDiario.fecha_referencia', 'TcMovimientosDiario.codo','TcMovimientosDiario.pago_mes_inicial',
								 'TcMovimientosDiario.pago_mes_final','TcMovimientosDiario.adicionado_por', 'TcMovimientosDiario.created',
								 'TcMovimientosDiario.id','TcMovimientosDiario.tc_contrato_id');							
		$this->TcMovimientosDiario->recursive = -1;

		$maximo = $this->TcMovimientosDiario->find('first',
		array('conditions'=>array('TcMovimientosDiario.tc_contrato_id'=> $contratoid,
																		'TcMovimientosDiario.mg_tipo_situacione_id'=>1,
																		'TcMovimientosDiario.mg_tipo_transaccione_id NOT BETWEEN ? AND ?'=>array(2, 5), ),
													'fields'=>array('MAX(TcMovimientosDiario.id) as max_movi'),
													'group'=>array('TcMovimientosDiario.tc_contrato_id')));

		$this->TcMovimientosDiario->recursive = 0;

		$count = $this->TcMovimientosDiario->find('count',
		array('conditions'=>array('TcMovimientosDiario.tc_contrato_id'=> $contratoid)));

		/*echo $maximo[0]['max_movi'];*/
		$historialA = $this->TcMovimientosDiario->find('all',
		array('conditions'=>array('TcMovimientosDiario.tc_contrato_id'=> $contratoid),
													'fields'=>$fields_array,
													'limit'=>$limit,
													'page'=>$page,
	        										'order'=>'TcMovimientosDiario.id DESC'));
		$Arrays1 = array();
		$Arrays = array();


		foreach ($historialA as $k => $v)
		{
			foreach ($v as $k1 => $v1)
			{
				foreach ($v1 as $k2 => $v2)
				{
					$Arrays1[$k1.'-'.$k2] = $v2;
				}
			}
			if ($v['TcMovimientosDiario']['id']=== $maximo[0]['max_movi'])
			{
				$Arrays1['action1']='icon-undo';
				$Arrays1['qtip1']='Reversar Movimiento';
			}
			else
			{
				$Arrays1['action1']='';
				$Arrays1['qtip1']='';
			}
			$Arrays[] = $Arrays1;
		}
		$this->set('total', $count);
		$this->set('historial',$Arrays);
		//$this->set('maximo',$maximo);
	}
}	//FIN CONTROLLER

?>